import os


def count_files_in_specified_folder(target_folder):
    """
    统计指定文件夹及其所有子目录中的文件数量
    :param target_folder: 要统计的目标文件夹路径
    :return: 包含统计结果的字典 {文件夹路径: 文件数量}
    """
    # 验证路径有效性
    if not os.path.exists(target_folder):
        raise ValueError("指定的路径不存在")
    if not os.path.isdir(target_folder):
        raise ValueError("指定的路径不是一个文件夹")

    folder_stats = {}

    # 遍历目标文件夹
    for root, dirs, files in os.walk(target_folder):
        # 计算当前目录的文件数量（不包括子目录）
        file_count = len(files)
        # 存储相对路径或绝对路径
        folder_stats[root] = file_count

    return folder_stats


def print_folder_stats(stats_dict):
    """ 打印统计结果 """
    print(f"{'文件夹路径':<40} | 文件数量")
    print("-" * 50)
    for folder, count in stats_dict.items():
        print(f"{folder:<40} | {count:>10}")


# 使用示例
if __name__ == "__main__":
    # 指定要统计的文件夹路径
    search_path = input("请输入要统计的文件夹路径：").strip()

    try:
        results = count_files_in_specified_folder(search_path)
        print_folder_stats(results)
    except Exception as e:
        print(f"发生错误: {str(e)}")